Integrated circuit design

ABSTRACT

A computer-implemented method of integrated circuit design comprises: using a computer, detecting data communication paths and associated data traffic requirements between a set of data handling nodes in an integrated circuit layout, the data handling nodes acting as routing nodes or either source nodes or sink nodes for a given data communication path, each source node and each sink node having a respective provisional data width, each data communication path having at least one routing node between the source node and the sink node; using the computer, assigning a provisional data width to each routing node so that, for each of the detected data communication paths, the one or more routing nodes in that data communication path have a provisional data width sufficient to handle the data traffic requirement associated with that communication path; using the computer, performing one or more iterations of modifying the integrated circuit topology by:
         (i) detecting two or more connected groups of the data handling nodes in which all of the data handling nodes in a given group have the same provisional data width and in which, for each given group, the provisional data width of data handling nodes in that group is different to the provisional data width of data handling nodes in a group connected to the given group;   (ii) selecting two or more of the groups to be merged, in dependence upon a cost function; and   (iii) merging the selected two or more groups, the merging comprising assigning a provisional data width to all of the data handling nodes in the selected two or more groups equal to one of the provisional data widths amongst the selected two or more groups; and   using the computer, providing one or more other components in the layout including at least a data width resizing component between each pair of groups having different respective provisional data widths.

BACKGROUND

This disclosure relates to integrated circuit design.

In the design of some integrated circuit topologies such as (forexample) topologies for so-called network on chip (NoC) devices,multiple data handling nodes are connected together to form datacommunication paths.

The integrated circuit area needed to implement the topology canincrease with the data width of the data communication paths, in that agreater data width implies a larger number of parallel connections to beimplemented in the final integrated circuit. In the case of datacommunication paths between two data handling nodes associated withdifferent data widths, there can be a need for data width resizingcomponents to provide an interface between the two data widths.

SUMMARY

In an example arrangement there is provided a computer-implementedmethod of integrated circuit design, the method comprising:

using a computer, detecting data communication paths and associated datatraffic requirements between a set of data handling nodes in anintegrated circuit layout, the data handling nodes acting as routingnodes or either source nodes or sink nodes for a given datacommunication path, each source node and each sink node having arespective provisional data width, each data communication path havingat least one routing node between the source node and the sink node;

using the computer, assigning a provisional data width to each routingnode so that, for each of the detected data communication paths, the oneor more routing nodes in that data communication path have a provisionaldata width sufficient to handle the data traffic requirement associatedwith that communication path;

using the computer, performing one or more iterations of modifying theintegrated circuit topology by:

-   -   (i) detecting two or more connected groups of the data handling        nodes in which all of the data handling nodes in a given group        have the same provisional data width and in which, for each        given group, the provisional data width of data handling nodes        in that group is different to the provisional data width of data        handling nodes in a group connected to the given group;    -   (ii) selecting two or more of the groups to be merged, in        dependence upon a cost function; and    -   (iii) merging the selected two or more groups, the merging        comprising assigning a provisional data width to all of the data        handling nodes in the selected two or more groups equal to one        of the provisional data widths amongst the selected two or more        groups; and

using the computer, providing one or more other components in the layoutincluding at least a data width resizing component between each pair ofgroups having different respective provisional data widths.

In another example arrangement there is provided an integrated circuithaving an integrated circuit design produced by the method definedabove.

In another example arrangement there is provided a computer programproduct comprising a non-transitory machine-readable storage medium onwhich are stored program instructions which, when executed by a computerprocessor, cause the computer processor to perform a method ofintegrated circuit design, the method comprising:

detecting data communication paths and associated data trafficrequirements between a set of data handling nodes in an integratedcircuit layout, the data handling nodes acting as routing nodes oreither source nodes or sink nodes for a given data communication path,each source node and each sink node having a respective provisional datawidth, each data communication path having at least one routing nodebetween the source node and the sink node;

assigning a provisional data width to each routing node so that, foreach of the detected data communication paths, the one or more routingnodes in that data communication path have a provisional data widthsufficient to handle the data traffic requirement associated with thatcommunication path;

performing one or more iterations of modifying the integrated circuittopology by:

-   -   (i) detecting two or more connected groups of the data handling        nodes in which all of the data handling nodes in a given group        have the same provisional data width and in which, for each        given group, the provisional data width of data handling nodes        in that group is different to the provisional data width of data        handling nodes in a group connected to the given group;    -   (ii) selecting two or more of the groups to be merged, in        dependence upon a cost function; and    -   (iii) merging the selected two or more groups, the merging        comprising assigning a provisional data width to all of the data        handling nodes in the selected two or more groups equal to one        of the provisional data widths amongst the selected two or more        groups; and

providing one or more other components in the layout including at leasta data width resizing component between each pair of groups havingdifferent respective provisional data widths.

Further respective aspects and features of the present technology aredefined by the appended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

The present technique will be described further, by way of example only,with reference to embodiments thereof as illustrated in the accompanyingdrawings, in which:

FIG. 1 schematically illustrates an example computer system;

FIG. 2 schematically illustrates an NoC;

FIG. 3 is a schematic flowchart illustrating a method;

FIG. 4 to schematically illustrates a draft layout;

FIGS. 5 to 7 schematically illustrate example data communication paths;

FIGS. 8 and 9 are schematic representations of the layout of FIG. 4;

FIGS. 10 and 11 schematically illustrate the use of Resizer devices;

FIGS. 12 to 19 schematically illustrate the merging of connected groupsof nodes;

FIG. 20 schematically illustrates a resulting layout without Resizercomponents;

FIG. 21 schematically illustrates the layout of FIG. 20 with Resizercomponents inserted;

FIG. 22 schematically illustrates a final layout for fabrication; and

FIG. 23 is a schematic flowchart illustrating a method.

Example embodiments of the present disclosure relate to a methodperformed by a computer or data processing system such as a computerprocessor. FIG. 1 is a schematic diagram of an example computerapparatus appropriate to the performance of such a method.

Referring to FIG. 1, various components are shown schematically,interconnected by a bus arrangement 170. Other components may also beprovided even if they are not shown (for clarity of the diagram andexplanation) in FIG. 1.

The example computer 100 comprises: a central processing unit (CPU) 110,a random access memory (RAM) 120, a non-volatile memory (NVM) 130 suchas a hard disk drive, an interface (I/F) 140 for connecting to othercomponents such as peripheral devices, a network connection, theinternet and so on, a user interface (UI) 150 providing, for example, akeyboard, mouse, display or the like, and a non-transitory machinereadable medium (NTMRM) 160 such as a magnetic or optical disk, a flashmemory or other non-volatile memory or the like.

In example arrangements, the NTMRM 160 can embody a computer programproduct comprising the NTMRM 160 on which are stored programinstructions which, when executed by the computer processor 110 of thecomputer 100, cause the computer processor to perform a method of thetype described below, such as the method of FIG. 3 to be discussedbelow.

Example arrangements relate to the design, by a computer system, of anintegrated circuit device such as a so-called network on chip (NoC)device, although the design of other types of integrated circuit is alsoenvisaged within the scope of the present disclosure.

An NoC represents a system of interconnected processing devices or otherdevices embodied on a single integrated circuit. An example schematicrepresentation of an NoC 310, providing an example of an integratedcircuit designed and/or fabricated according to the present techniques,is provided as FIG. 2. Here, multiple so-called IP blocks 300 areconnected to one another to provide a network of such blocks. In thisexample, an “IP block” is a unit of circuitry with particularfunctionality, which typically (though not necessarily) represents theintellectual property or IP of a single party. Commonly, in integratedcircuit design, these so-called IP blocks are treated as units withinthe integrated circuit design process, even though an IP block maycomprise very many gates, transistors or other components in its ownright. The term “IP block” is used here in a generic illustrative sense;the IP blocks 300 are simply functional blocks with the capability ofcommunicating data with other such functional blocks. Their precisefunction is a matter of system design and is not relevant to thecommunication arrangements which will be discussed in more detail below.Similarly, although the term “IP block” implies ownership of rights inthe module design, the present disclosure is not limited to anyparticular ownership arrangement.

So, for the purposes of FIG. 2, it is sufficient to note that the IPblocks 300 are capable of communicating with other IP blocks 300 withinthe NoC 310.

Communication between IP blocks may be according to so-called virtualchannels (VCs). Virtual channels assign a respective time slot (in atime division multiplexed arrangement) or (in other examples) anidentifier to packets being transmitted via a physical connectionbetween two data handling nodes, so as to allow multiple communicationpaths (such as paths in each direction) to use that physical connectionin such a way that packets associated with different VCs do not collideor otherwise interfere with one another.

Each IP block comprises a bridge 320 shown as a shaded box at aninput/output of the IP block. The purpose of the bridge is as follows.In general terms, within an NoC such as the schematic NoC 310, data istransferred in packetized form, for example as so-called flits (flowcontrol units). The routing and transmission of the flits is under thecontrol of various interconnected routers (R) 330. The data transportmechanism used by the routers 330 and connections such as connections340 between the routers and the IP blocks is generic, which is to saythe same protocol is used regardless of the nature of the IP blocks 300forming the NoC 310. In other words, the transport protocol is“agnostic” to the nature or design of the individual IP blocks. Thebridges 320 convert a particular IP block's data protocol (which may notbe necessarily a packetized protocol) into the generic transportprotocol used by the network connections 340 and the routers 330.Similarly, for packets or flits received from the network, the bridges320 convert the generic transport protocol of the network into thespecific data input requirements of the respective IP block.

So, a particular bridge is specific to its associated IP block in termsof its interface with that IP block, but it generic to the network interms of its interface with the network.

The routers 330 in FIG. 2 are shown schematically as octagonal blocks,which schematically represents the fact they are 8-port routers.However, other numbers of router ports could be provided. The routerscould all have a similar design, or different types of routers could beused within a single NoC.

As discussed below, the data links 340 have an associated data width interms of the number of bits that can be transmitted in parallel. Forexample, this may correspond to a number of physical conductors in afinally implemented device.

An example data link 350 is drawn schematically using a wider or thickerline than other data links in the schematic representation of FIG. 2.This is to provide a schematic representation of a wider data link,which is to say that more conductors are provided so that the data link350 can carry more data in parallel than other narrower data links ofFIG. 2. This could represent a greater capacity of that data link interms of bits per second transferred, if the data link 350 runs at thesame clock speed as other, narrower, data links in FIG. 2.Alternatively, the clock speed of the data link 350 could beproportionately slower so that although more physical wires are used forthe data link 350, its transport capacity in bits per second is the sameas that of other data links such as the data links 340. In general, thedata transport capacity of each of the data links is dependent upon byits width multiplied by its operating clock speed.

In the example of FIG. 2, between any one of the IP blocks 300 and anyother one of the IP blocks 300, there is only one valid data transferroute. The routing is statically determined at the integrated circuitdesign stage. If the interconnection of routers 330 provides multiplepotential data transport routes, a particular route between a first anda second IP block is selected and established statically in advancerather than being allocated dynamically in use. This provides a safermode of operation avoiding potential deadlocks or other hazardoussituations which might occur if the routing of data packets wasselectable in operation. So, regardless of how many potentialconnections there are between a particular IP block pair of one IP blockand another, the data will be routed by a pre-selected one of thoseconnection routes.

Note that in FIG. 2, it is possible that the data handling nodes areconfigured within more than one power domain, in which case one or moreof the other components provided (for example, in a step 230 of FIG. 3to be discussed below) may be a power converter component. Similarly, itis possible that the data handling nodes are configured within more thanone clock domain, in which case one or more of the other componentsprovided at 230 may be a clock domain converter component. In exampleswhere a data communication path has, in the layout, at least a thresholdpath length, the routing nodes of that data communication path maycomprise a pipeline component.

Referring now to FIG. 3, by way of summary of the processes to bediscussed below, a schematic flowchart is provided representing acomputer-implemented method of integrated circuit design, the methodcomprising:

at a step 200, using a computer, detecting data communication paths andassociated data traffic requirements between a set of data handlingnodes in an integrated circuit layout, the data handling nodes acting asrouting nodes or either source nodes or sink nodes for a given datacommunication path, each source node and each sink node having arespective provisional data width, each data communication path havingat least one routing node between the source node and the sink node;

at a step 210, using the computer, assigning a provisional data width toeach routing node so that, for each of the detected data communicationpaths, the one or more routing nodes in that data communication pathhave a provisional data width sufficient to handle the data trafficrequirement associated with that communication path;

at a step 220, using the computer, performing one or more iterations ofmodifying the integrated circuit topology by:

-   -   at a step 222, detecting two or more connected groups of the        data handling nodes in which all of the data handling nodes in a        given group have the same provisional data width and in which,        for each given group, the provisional data width of data        handling nodes in that group is different to the provisional        data width of data handling nodes in a group connected to the        given group;    -   at a step 224, selecting two or more of the groups to be merged,        in dependence upon a cost function; and    -   at a step 226, merging the selected two or more groups, the        merging comprising assigning a provisional data width to all of        the data handling nodes in the selected two or more groups equal        to one of the provisional data widths amongst the selected two        or more groups. In examples as discussed below, the merging step        comprises merging the selected two or more groups, the merging        comprising assigning a provisional data width to all of the data        handling nodes in the selected two or more groups equal to the        highest provisional data width amongst the selected two or more        groups; and

at a step 230, using the computer, providing one or more othercomponents in the layout including at least a data width resizingcomponent between each pair of groups having different respectiveprovisional data widths.

The computer used to implement these steps may be the schematicapparatus of FIG. 1. The steps shown in FIG. 3 will be discussed in moredetail below with reference to a worked example.

Referring now to FIG. 4, a draft layout of an integrated circuit isillustrated showing the data connections between routers 330 and bridges320 of the form described with reference to FIG. 2. The data links orconnections 340 required to achieve the functionality of the circuitryare also illustrated, along with provisional data widths associated witheach bridge 320. These are shown as numbers (referring to numbers ofbits which can be transmitted simultaneously by those bridges) withinthe square shape schematically representing the respective bridge 320.

The provisional data widths are provisionally assigned to the bridgesbased upon performance requirements of the related IP blocks 300 (notshown in FIG. 4). However, as discussed below, the provisional datawidths can be amended or modified during the layout process of FIG. 3.

The circuit layout of FIG. 4 includes a number of data communicationpaths amongst all of the set of data handling nodes (in this example,bridges and routers) in the layout of FIG. 4. In particular, the bridges320 can act as either source nodes or sink nodes for a given datacommunication path. The data communication paths have at least onerouter between the source node and the sink node. Note that, as betweena pair of bridges, this analysis can indicate two data communicationpaths, one path being from a first of the bridges to the other of thebridges and the other path being in the opposite direction between thesame pair of bridges.

The step 210 mentioned above concerns assigning a provisional data widthto each routing node. This is done so that for each of the detected datacommunication paths, the one or more routing nodes or routers in thatdata communication path have a provisional data width sufficient tohandle the data traffic requirements associated with that communicationpath. So, as part of this process, each router 330 of FIG. 4 ispopulated with a provisional data width. An example of the way in whichthis can be achieved will be discussed with reference to FIGS. 5 to 7.

FIGS. 5 to 7 schematically represent example data communication pathsinvolving bridge nodes (drawn as squares) and intervening routing nodesor routers drawn as octagons.

Referring to FIG. 5, for an example data communication path between asource node 500 and a sink node 510, the maximum possible bandwidth ofeach of the source and sink nodes is derived based on that node'sprovisional data width and clock frequency. In the example of FIG. 5,the source and sink nodes have a provisional data width of 6 and anequal clock frequency (of an arbitrary frequency “n”).

A measure of effective bandwidth is derived as the minimum of the sourceand sink nodes' bandwidth. In FIG. 5, the bandwidth for each is 6n andso the minimum is also 6n.

Then, an effective data width is derived as the ceiling of the effectivebandwidth divided by the clock frequency of the source node 500. Here,the ceiling function represents the integer next higher than a realnumber argument.

The provisional data width or “effective link size” is computed from“effective data width”, header information and traffic. The “effectivedata width” is, in the present examples, the calibration of the actualdata width of the source IP port. The “effective data width” is computed(in these examples) as a Minimum Of (Max bandwidth at source IP or node,Max bandwidth at destination (sink) IP or node) divided by the clockspeed of the source IP or node. So the maximum effective rate by whichtraffic can be pushed from the source IP to the destination or sink IPis the “effective data width” multiplied by the clock speed of thesource IP.

“effective link size” is computed for each traffic profile. Please notethat there can be multiple traffic profiles between same pair of IPs.Hence each pair of IP gets a set of “effective link sizes”. “effectivelink size” information is annotated to each router (as one of thecandidate link size), on the route from source to destination IP. Andthis is done across all the routes. In the current example of FIG. 5,the provisional data width for each router is 6.

Another example is shown in FIG. 6, in which a source node 600 and asink node 610 of an example communication path are linked again by threeintermediate routers. The source node 600 has a provisional data widthof 3 and a clock speed of n, whereas the sink node 610 has a provisionaldata width of 6 but a clock speed of n/2. The effective bandwidth is 3nand the effective data width is 3. Therefore, each router in thecommunication path is assigned the provisional data width of 3.

In FIG. 7, two intersecting communication paths are shown, one from asource node 700 to a sink node 710, both having a provisional data widthof 3 and a clock speed of n, and another between a source node 720 and asink node 730, both having a provisional data width of 6 and a clockspeed of n. Applying the process described above to the communicationpath from the node 700 to the node 710 would give a provisional datawidth of 3 for each of the intervening routers. However, two of therouters 740 are also in the communication path from the node 720 to thenode 730, which implies a provisional data width of 6. The larger ofthese two values, 6, is used as the provisional data width of these tworouters.

In this way and using these techniques, a provisional data width isassigned to each router, drawn as an octagon, in the draft layout ofFIG. 4, with the results being illustrated schematically in FIG. 8.

Referring to FIG. 9, a step of detecting two or more connected groups ofthe data handling nodes (source nodes, sink nodes and routing nodes) isperformed, in which all of the data handling nodes in a given connectedgroup have the same provisional data width and in which, for each givengroup, the provisional data width of data handling nodes in that groupis different to the provisional data width of data handling nodes in agroup connected to the given group.

In other words, the nodes shown in FIG. 8 are grouped according toprovisional data width. A particular group for a given data widthcontains all of the connected nodes having that given provisional datawidth. So, for example, a group 900 contains nodes having a provisionaldata width of 3, a group 910 contains all of the connected nodes havinga provisional data width of 14, and so on.

The grouping as applied in FIG. 9 can be referred to as a so-calledundirected conflict graph.

As drawn in FIG. 9, there are two numerical values contained withinsquare brackets inside each group as [W] [L]. The first [W] is theprovisional data width of nodes in that group, for example 3 in the caseof the group 900. The second value [L] (for example, 21 in the case ofthe group 900) represents the number of connections or links within thatgroup.

Within a group, the data handling nodes are connected to one another bydata handling node links. A data connection between two nodes within thegroup is counted as two such links. An example is a data connection 902or a data connection 904. A data connection to another group, such as adata connection 906 or a data connection 908 is counted as a single linkin this arrangement. This arrives at a number of links equal to 21 forthe group 900, and so on for the other groups shown in FIG. 9.

A process can then be performed with the aim of improving the layout ofFIG. 9 with respect to a cost function. The technical significance ofthe cost function will be discussed with reference to FIGS. 10 and 11.

FIGS. 10 and 11 schematically represent the insertion into the layout ofdata width resizing components such as so-called “Serdes”(serializer-deserializer) or “resizer” components which convert betweena first data width and a second data width, for example by breakingwider data words into multiple successive (serial) narrower data words.

In the example of FIG. 10, a group 100 (of the type shown in FIG. 9) isformed of nodes having an arbitrary data width x and is connected toother groups which are themselves shown schematically as broken lineboxes having respective arbitrary data widths y₁, y₂, y₃, none of whichis the same as x, although y₁, y₂ and y₃ could be the same or could bedifferent to one another.

In order to convert between the data width x and each one of the datawidths y_(n), a Resizer component 1010, 1020, 1030 is required to beinserted into the layout between the respective groups. Including aResizer component can increase the power consumption, layout size (on anintegrated circuit substrate), and possibly the latency of the dataconnections.

On the other hand, in FIG. 11, the group 1000 still has an arbitrarydata width x but the other 3 groups 1040, 1050, 1060 to which it isconnected also have the data width x. in this situation, it is not infact necessary to introduce Resizer components into the layout.

However, the process of changing (in the draft layout) the data width ofat least one of the groups in order to achieve this matching of datawidths will involve creating more conductors in the layout, so as toincrease whichever is the smaller data width to match whichever is thelarger data width. Here, it is noted that where two groups haverespective different provisional data widths x, y, in order to match thedata widths (and avoid the need for Resizer component) it is appropriateto increase the smaller data width to equal the larger. While theopposite could in theory be done (decreasing the larger to match thesmaller), given that each provisional data width has been selected usingthe techniques of FIGS. 5 to 7 in order to handle the trafficrequirements of a communication path, decreasing a provisional datawidth could (or in some cases definitely would) lead to an inability tohandle those data traffic requirements. So in the present examples, inorder to match data widths between connected groups, the smaller datawidth is increased to be equal to the larger data width, even if thisprovides excess data traffic handling capacity in some respects.

However, increasing the number of conductors and the data width in turnleads to potentially greater power consumption and potentially greaterrequired layout area when the circuitry is implemented as an integratedcircuit.

In the discussion below, changing a provisional data width of one groupto match that of a connected group will be referred to as “merging” thegroups, on the grounds that the definition of groups used earlier meansthat the two connected groups with the same data width would then beconsidered (under that definition) as a single group.

For this reason, there is a balance between including the Resizer (whichthemselves require layout area and power, and potentially increasedlatency) and changing the data widths so as to avoid the need forResizer. This balance is handled by the cost function to be discussed inmore detail below.

A pseudo-code example of a suitable cost function is as follows:

-   -   Cost Function (‘U’) [Example cost function]        Initialize ‘cost’ to 0        For each node ‘n’ in the initial graph ‘U’:    -   ‘cost’+=the weight (size of ‘n’ in terms of port count) of the        group ‘n’*(link-size (or provisional data width) of the group        ‘n’, or the first value [W] as drawn) (where the notation “+=”        indicates that the function takes the current value of the        variable and adds the second operand to it)        For each edge ‘e’ (boundary between two groups n1 and n2) in        ‘U’:    -   ‘cost’+=weight (number of times link-size mismatch occurs        between ‘n1’ and ‘n2’) of ‘e’    -   *‘Resizer_Cost’ as a function of (link-size of ‘n1’, link-size        of ‘n2’)        Return ‘cost’        The Resizer_Cost relating to a required Resizer component        between two groups of link_size_n1′, ‘link_size_n2’) is arrived        at as follows:        If (‘link_size_n1’==1 and ‘link_size_n2’==1) then return a value        of 1        Otherwise:        Initialize constants ‘A’=2.02658889; ‘B’=2.2386217;        ‘C’=−5.52788207        ‘cost_in_links’=‘A’*‘link_size_n1’+‘B’*‘link_size_n2’+‘C’        Return ‘cost_in_links’

This is just an example cost function, in which a respective weightingis applied to each parameter of the cost function, the weighting for aparameter being generated as a result of applying a weighting functionto that parameter. In the example, the notional cost of the goes up withthe number of data connections or links in a node or group, in a linearmanner. The notional cost also goes up with a weighted sum of the twodata widths. Alternatively, the cost could (for example) vary accordingto a polynomial or exponential function with respect to one or both datawidths. Other parameters may contribute to the cost function. Ingeneral, the cost function may be configured to generate a cost valuewhich indicates a greater cost in response to an increase in one or moreparameters selected from the list consisting of:

power usage of data handling nodes and connections;

physical area required to fabricate the data handling nodes and datahandling node links;

number of logic components required to fabricate the data handlingnodes; and

latency of the data communication paths.

Returning to the layout of FIG. 9, this is shown in a schematic form inFIG. 12, in that all of the individual nodes have been removed from theschematic drawing but the pairs of numbers (number of nodes and numberof links) are retained, along with an indication (alongside linesjoining the groups on the diagram) of the number of links betweendifferent groups.

The groups are ordered by an ordering criterion and then a group isselected from the ordered groups. Then, one or more merge candidategroups are selected from one or more other groups connected to the givenselected group. Example arrangements perform two or more iterations ofthe method (or at least of the modifying step 220, and selecting atleast two different given groups for different iterations according tothe group ordering criterion.

In the example to be discussed, the ordering criterion is a function(such as the order) of the number of data handling node links within agroup, which is to say the second number [L] shown in each box in FIG.12, and the given group for a first iteration of the process is selectedas the group with the most appropriate (for example, the largest) numberof data handling node links, which is to say the largest second numberas drawn in FIG. 12. In this example, the first selected given group isa group 1200.

Then, a merge candidate group is selected from those connected to thegroup 1200. In the present examples, the merge candidate group is onewhich has a lower provisional data width than the given group 1200,because the in an iteration of the modifying step the merging processwill involve raising (or not changing, if a merge is not performed) theprovisional data width of the potential merge candidate to match that ofthe given group 1200. So, potential merge candidate groups are groups1210, 1220, 1230. The group 1240 is not a merge candidate group for thegiven group 1200.

Amongst the merge candidate groups, a merge is selected according towhich one of the merge candidate groups provides, when merged, the bestnet improvement in the cost function. In the example shown in FIG. 12and further in FIG. 13, this is the group 1230, so that a merged group1300 is generated based on the previous groups 1200, 1230.

The process is repeated for a next higher group 1400, in terms of itssecond number, the number of links, as shown in FIG. 14 in which thegroup 1400 is merged with a group 1410 to provide a merged group 1420.In FIG. 15, the merged group 1420 is then merged with the group 1500 toprovide a newly merged group 1510. Note that the merge process cancontinue to happen, across all the identified adjacent nodes, so it mayoccur more than once. the process can avoid an undesirable so-calledhill climbing situation (where nodes just grow bigger and bigger withoutnecessarily leading to the best overall outcome) by not adding mergecandidates based on newly generated or newly identified neighbours. Forexample, node A is connected to B and node B is connected to C. Alsoassume that B is identified to be merged with A. After the merge, thenew node AB is connected to C. In this same iteration C would not beconsidered as a candidate to be merged with AB. This avoids a situationin which eventually all the nodes are merged to one node (a typical hillclimbing situation).

A pseudo-code representation of the process of the step 220, whenimplemented as an iterative loop, is as follows:

Do while (‘merge_count’>0)

-   -   ‘merge_count’=0    -   For each node ‘n’ in the initial graph ‘U’, in descending order        of weight, do the following:        -   For each adjacent node ‘c’ of ‘n’, where candidate link-size            of ‘c’ is less than the candidate link-size of ‘n’, do the            following (to identify all merge candidates for this            iteration; no new merge candidates are added here):            -   Generate a candidate graph (‘CU’), by merging node ‘c’                to node ‘n’            -   If Cost(‘CU’)<Cost(‘U’)                -   ‘U’=‘CU’ (adopt the candidate merger)                -   ++′merge_count (increment merge count)

This pseudo-code summarises an arrangement in which successiveiterations of the modifying step are performed, in which each iterationreduces the cost indicated by the cost value of the cost function, untilno further iterations are possible which reduce the cost indicated bythe cost value of the cost function.

FIGS. 16, 17 and 18 show further instances of the generation of mergedgroups 1600, 1700 and 1800.

The process continues until, as shown in FIG. 19, a state is reached atwhich no further merges can be performed which give an improvement inthe cost function. So, according to this particular cost function, FIG.19 represents a best possible set of merged groups according to the costfunction and process discussed above.

The arrangement of FIG. 19 is shown in expanded form in FIG. 20. Asdiscussed above, each link between groups of a different data width isprovided with a Resizer component 1300 as shown in FIG. 21, giving afinal layout as shown in FIG. 22 in which a data width has been assignedto each node and Resizer components 1300 introduced where necessary.This layout can then be passed for physical layout on an integratedcircuit substrate and implementation.

FIG. 22 is a schematic flowchart illustrating a method of integratedcircuitry design and manufacture. At a step 1500, a draft circuitrylayout is prepared. At a step 2310, the draft layout is modifiedaccording to the process described above and with reference to FIG. 3,to arrive at a modified layout. At a step 2320 an integrated circuit isfabricated according to the modified layout, using any known fabricationtechnique.

In the present application, the words “configured to . . . ” are used tomean that an element of an apparatus has a configuration able to carryout the defined operation. In this context, a “configuration” means anarrangement or manner of interconnection of hardware or software. Forexample, the apparatus may have dedicated hardware which provides thedefined operation, or a processor or other processing device (such as aprocessing element as discussed above) may be programmed to perform thefunction. “Configured to” does not imply that the apparatus elementneeds to be changed in any way in order to provide the definedoperation.

Although illustrative embodiments of the present techniques have beendescribed in detail herein with reference to the accompanying drawings,it is to be understood that the present techniques are not limited tothose precise embodiments, and that various changes, additions andmodifications can be effected therein by one skilled in the art withoutdeparting from the scope and spirit of the techniques as defined by theappended claims. For example, various combinations of the features ofthe dependent claims could be made with the features of the independentclaims without departing from the scope of the present techniques.

The invention claimed is:
 1. A computer-implemented method of integratedcircuit design, the method comprising: using a computer, detecting datacommunication paths and associated data traffic requirements between aset of data handling nodes in an integrated circuit layout, the datahandling nodes acting as routing nodes or either source nodes or sinknodes for a given data communication path, each source node and eachsink node having a respective provisional data width, each datacommunication path having at least one routing node between the sourcenode and the sink node; using the computer, assigning a provisional datawidth to each routing node so that, for each of the detected datacommunication paths, the one or more routing nodes in that datacommunication path have a provisional data width sufficient to handlethe data traffic requirement associated with that communication path;using the computer, performing one or more iterations of modifying theintegrated circuit topology by: (i) detecting two or more connectedgroups of the data handling nodes in which all of the data handlingnodes in a given group have the same provisional data width and inwhich, for each given group, the provisional data width of data handlingnodes in that group is different to the provisional data width of datahandling nodes in a group connected to the given group; (ii) selectingtwo or more of the groups to be merged, in dependence upon a costfunction; and (iii) merging the selected two or more groups, the mergingcomprising assigning a provisional data width to all of the datahandling nodes in the selected two or more groups equal to one of theprovisional data widths amongst the selected two or more groups; andusing the computer, providing one or more other components in the layoutincluding at least a data width resizing component between each pair ofgroups having different respective provisional data widths.
 2. Themethod of claim 1 comprising: ordering the groups by an orderingcriterion; selecting a given group from the ordered groups; andselecting one or more merge candidate groups from one or more othergroups connected to the given group.
 3. The method of claim 2 comprisingperforming two or more iterations of the modifying step, and selectingat least two different given groups for different iterations accordingto the group ordering criterion.
 4. The method of claim 2, in which: thedata handling nodes are connected to one another by data handling nodelinks; and the ordering criterion is a function of the number of datahandling node links connecting the data handling nodes in each group. 5.The method of claim 2, in which the one or more merge candidate groupshave a lower provisional data width than the given group.
 6. The methodof claim 1, in which the provisional data width of any given datahandling node is increased by, or unchanged as a result of, any giveniteration of the modifying step.
 7. The method of claim 1, in which thecost function is configured to generate a cost value which indicates agreater cost in response to an increase in one or more parametersselected from the list consisting of: power usage of data handling nodesand connections; physical area required to fabricate the data handlingnodes and data handling node links; number of logic components requiredto fabricate the data handling nodes; and latency of the datacommunication paths.
 8. The method of claim 7, comprising performingsuccessive iterations of the modifying step, in which each iterationreduces the cost indicated by the cost value of the cost function, untilno further iterations are possible which reduce the cost indicated bythe cost value of the cost function.
 9. The method of claim 7,comprising assigning a respective weighting to each parameter of thecost function, the weighting for a parameter being generated as a resultof applying a weighting function to that parameter.
 10. The method ofclaim 1, in which the data handling nodes are configured within morethan one power domain.
 11. The method of claim 10, in which one or moreof the other components provided is a power converter component.
 12. Themethod of claim 1, in which data handling nodes are configured withinmore than one clock domain.
 13. The method of claim 12, in which one ormore of the other components provided is a clock domain convertercomponent.
 14. The method of claim 1, in which, for a data communicationpath having, in the layout, at least a threshold path length, therouting nodes of that data communication path comprise a pipelinecomponent.
 15. The method of claim 1, in which the merging stepcomprises merging the selected two or more groups, the mergingcomprising assigning a provisional data width to all of the datahandling nodes in the selected two or more groups equal to the highestprovisional data width amongst the selected two or more groups.
 16. Themethod of claim 4, in which the ordering criterion is an order of thenumber of data handling node links connecting the data handling nodes ineach group.
 17. The method of claim 16, comprising selecting the groupwith the largest number of data handling node links as the given groupfor the first iteration of the modifying step.
 18. The method of claim1, comprising the step of: fabricating an integrated circuit layoutaccording to the integrated circuit design.
 19. An integrated circuithaving an integrated circuit design produced by the followingcomputer-implemented method: using a computer, detecting datacommunication paths and associated data traffic requirements between aset of data handling nodes in an integrated circuit layout, the datahandling nodes acting as routing nodes or either source nodes or sinknodes for a given data communication path, each source node and eachsink node having a respective provisional data width, each datacommunication path having at least one routing node between the sourcenode and the sink node; using the computer, assigning a provisional datawidth to each routing node so that, for each of the detected datacommunication paths, the one or more routing nodes in that datacommunication path have a provisional data width sufficient to handlethe data traffic requirement associated with that communication path;using the computer, performing one or more iterations of modifying theintegrated circuit topology by: (i) detecting two or more connectedgroups of the data handling nodes in which all of the data handlingnodes in a given group have the same provisional data width and inwhich, for each given group, the provisional data width of data handlingnodes in that group is different to the provisional data width of datahandling nodes in a group connected to the given group; (ii) selectingtwo or more of the groups to be merged, in dependence upon a costfunction; and (iii) merging the selected two or more groups, the mergingcomprising assigning a provisional data width to all of the datahandling nodes in the selected two or more groups equal to one of theprovisional data widths amongst the selected two or more groups; andusing the computer, providing one or more other components in the layoutincluding at least a data width resizing component between each pair ofgroups having different respective provisional data widths.
 20. Acomputer program product comprising a non-transitory machine-readablestorage medium on which are stored program instructions which, whenexecuted by a computer processor, cause the computer processor toperform a method of integrated circuit design, the method comprising:detecting data communication paths and associated data trafficrequirements between a set of data handling nodes in an integratedcircuit layout, the data handling nodes acting as routing nodes oreither source nodes or sink nodes for a given data communication path,each source node and each sink node having a respective provisional datawidth, each data communication path having at least one routing nodebetween the source node and the sink node; assigning a provisional datawidth to each routing node so that, for each of the detected datacommunication paths, the one or more routing nodes in that datacommunication path have a provisional data width sufficient to handlethe data traffic requirement associated with that communication path;performing one or more iterations of modifying the integrated circuittopology by: (i) detecting two or more connected groups of the datahandling nodes in which all of the data handling nodes in a given grouphave the same provisional data width and in which, for each given group,the provisional data width of data handling nodes in that group isdifferent to the provisional data width of data handling nodes in agroup connected to the given group; (ii) selecting two or more of thegroups to be merged, in dependence upon a cost function; and (iii)merging the selected two or more groups, the merging comprisingassigning a provisional data width to all of the data handling nodes inthe selected two or more groups equal to one of the provisional datawidths amongst the selected two or more groups; and providing one ormore other components in the layout including at least a data widthresizing component between each pair of groups having differentrespective provisional data widths.